#include <iostream>
using namespace std;

const int N = 25;

int n, k;
int a[N];

int ret; // 存储结果
int path; // 记录和

bool isprime(int x)
{
	if (x <= 1)	return false;

	for (int i = 2; i <= x / i; i++)
	{
		if (x % i == 0)	return false;
	}
	return true;
}

void dfs(int pos, int begin)
{
	if (pos > k)
	{
		// 判断素数
		if (isprime(path))	ret++;
		
		return;
	}

	for (int i = begin; i <= n; i++)
	{
		path += a[i];

		dfs(pos + 1, i + 1);

		path -= a[i];
	}
}

int main()
{
	cin >> n >> k;

	for (int i = 1; i <= n; i++)	cin >> a[i];

	dfs(1, 1);

	cout << ret << endl;

	return 0;
}